//
// Created by JYL on 2023-11-28.
//

#ifndef WHEELTEC_BALANCE_TASK_H
#define WHEELTEC_BALANCE_TASK_H

#include "main.h"


#define PI 3.14159265							//PI圆周率
#define Control_Frequency  200.0	//编码器读取频率
#define Diameter_67  67.0 				//轮子直径67mm/75.0
#define EncoderMultiples   4.0 		//编码器倍频数
#define Encoder_precision  500.0 	//编码器精度 500线
#define Reduction_Ratio  30.0			//减速比30
#define Perimeter  210.4867 			//周长，单位mm

#define Wheel_spacing 160         //轮距，单位mm
#define DIFFERENCE 100

//小车状态定义
typedef struct {
    //定义小车行为
    u8 Mode;                //平衡-遥控-避障-巡线
    u8 Way_Angle;           //获取角度的算法，0：四元数  1：卡尔曼  2：互补滤波
    _Bool Pick_up_stop;     //检查是否被拿起标志位(1:被拿起)
    _Bool Flag_Stop;        //电机停止标志位(1:停止)
    //定义小车状态
    float Middle_angle;     //机械中值默认为0
    uint8_t Middle_line;    //巡线中值(0~224)=112
    float Velocity_Left,Velocity_Right;	            //车轮速度(mm/s)
}BALANCE;
extern BALANCE balance;

_Bool Turn_Off(float angle, float voltage);
int Pick_Up(float Acceleration,float Angle,int encoder_left,int encoder_right);
int Put_Down(float Angle,int encoder_left,int encoder_right);
int myabs(int a);
void Get_Velocity_Form_Encoder(int encoder_left,int encoder_right);

#endif //WHEELTEC_BALANCE_TASK_H
